home *** CD-ROM | disk | FTP | other *** search
/ Your Choice 3 / Your Choice Software Collection 3.iso / os2 / mr2_212 / read.me < prev    next >
Text File  |  1994-10-09  |  65KB  |  1,344 lines

  1. MR/2 - A QWK Compatible Mail Reader for OS/2.  10/09/94
  2.  
  3. Copyright (c) 1994, Knight Writer Software Company.
  4. All rights reserved.
  5.  
  6. ===================================================================
  7.                           N O T I C E
  8. ===================================================================
  9. This IS a shareware package, and does require a registration fee if
  10. you choose to continue using it after 30 days.     The registration
  11. fee is currently $25 US.  Eventually, the product MAY have a
  12. "begging" screen with a key-file that will register the software
  13. and suppress it.  The more interest I get, the more likely I am to
  14. continue with improvements.
  15. ------------------------------------------------------------------
  16.  
  17. CONTACTING THE AUTHOR
  18. =====================
  19.  
  20. You  can contact me in a number  of ways.  Unfortunately, I can't
  21. provide a phone number at this time.
  22.  
  23. US Mail:       Nick Knight
  24.                1823 David Ave.
  25.                Parma, Ohio 44134
  26.  
  27. Fido netmail:  1:157/2 to "Nick Knight"
  28.  
  29. Internet:       User "Nick Knight", (nick.knight@pcohio.com)
  30.  
  31. Fido Echomail: Find the Fidonet OS2PRODSUPPORT conference.    I'm there.
  32.  
  33.                Echomail messages to  me in more general conferences are
  34.                discouraged, as keeping them "on  topic" and
  35.                interesting to the masses would be difficult.  I do
  36.                read OS2, OS2PROG, C_PLUSPLUS and DR DEBUG daily,
  37.                though.    OFFLINE echo also (deals with mail readers),
  38.                this might be THE place to ask public questions, eh?
  39.  
  40.                I recently have acquired access to a host of other
  41.                networks with OS/2 conferences.    These include RIME,
  42.                SmartNet, Uninet, Intelec, Nanonet, Racenet and some
  43.                others I can't remember.
  44.  
  45.                I also do poll the Fidnet OS2PRODSUPPORT echo.
  46.  
  47. Direct BBS:    Leave a message on the Nerd's Nook BBS (1:157/2) at (216)
  48.                356-1772, 356-1872 or 356-1431.    I check in here
  49.                multiple times a day.  I will also keep the most recent
  50.                copy of MR/2 posted here.  Other boards (non-local)
  51.                will get updates at my convenience.
  52.  
  53. **************************************************************************
  54. **************************************************************************
  55. **               NOTE:  Nerd's now supports an MR/2 conference            **
  56. **               and file area.  Conference #208 is dedicated to            **
  57. **               MR/2 support and files.    File area #45 contains            **
  58. **               MR/2-related files.    Any file uploaded into                **
  59. **               conference 208 will be placed in file area 45.            **
  60. **************************************************************************
  61. **************************************************************************
  62.  
  63.                Nerd's does support file requests (157/2 or 157/3)
  64.  
  65. Compuserve:    I check only once a week or thereabouts.  Try mail to my
  66.                user ID    - 76066,1240, although internet mail has proven
  67.                to be a faster approach.
  68.  
  69.  
  70. Changes included in v2.12
  71. -------------------------
  72.  
  73. o    Editing a reply and saving it would (sometimes) cause a crash
  74.     when the reply conference was exitted.    This was non-destructive;
  75.     the reply would be OK, it was a function of the new sorting that
  76.     was slightly off.  Fixed.
  77.  
  78.  
  79. Changes included in v2.11
  80. -------------------------
  81. BETA as far as I'm concerned.  Seems to work just fine for me, but I
  82. changed lots of basic, its-been-working-forever code.  Please do not
  83. distribute widely ... and report any problems immediately.    If all checks
  84. out, I'll post it widely next weekend.
  85.  
  86. o    MQWK.CMD - added and tested command lines for using zip/unzip
  87.     (InfoZip utilities).  Tested with the DOS versions; assuming
  88.     command lines are the same.  Comment out the first set of lines,
  89.     uncomment out the second.  NOTE that zip failed when run with
  90.     the "start" command so as to run it in the background.  It seems
  91.     zip wants to open the source file in a mode that conflicts with
  92.     the fact that MR/2 also has it open.  Too bad; the PK utilities
  93.     work OK this way.
  94.  
  95. o    More minor tweaks to the conference index builder.    Someone
  96.     complained recently, so I thought I'd have a look.  I see room for
  97.     some *big* improvements! :)
  98.  
  99. o    When modifying a reply, the fact that the NEW reply had a later date
  100.     than the OLDER version would case the message pointer to seem to
  101.     "shift" to another message.  This was after you would save the reply
  102.     ... the message viewer showed something different.    This would only
  103.     happen if other replies had a matching subject.  I now sort the
  104.     reply headers differently.    I disregard date/time when sorting after
  105.     a reply-modify.
  106.  
  107. o    Ooops.    Forgot to list Ctrl-O on the Editor help screen.  Fixed.
  108.  
  109. o    I modified the conference header sort massively.  It now uses a
  110.     btree sort with minimal data movement.    This fix, in addition to
  111.     the other little tweaks a day or two ago, result in a great speed
  112.     boost.    My informal testing (watching the MR/2 clock tick away)
  113.     involved loading one 800 message conference, and another with 402
  114.     messages.  The larger conference took 15 seconds to load with the
  115.     old MR/2, it now takes about 5.  The smaller conference's time
  116.     dropped from 6 seconds to about 2-3.  The larger the conference,
  117.     the bigger the difference will be.    Smaller conferences will show
  118.     smaller improvements.  Overall, things are just *much* faster.
  119.  
  120. o    Converted all internal storage and formats to support 5 digit
  121.     conference numbers, as long as these numbers remain in the
  122.     16-bit range (up to 65,635).  A user reported a BBS system that
  123.     used thousands as a group identifier, and the remainder as the
  124.     sub-sconference number.  This was a big change, and I'll test
  125.     thoroughly before releasing.
  126.  
  127. o    Packet selection screen was expanded 2 characters and underlying
  128.     logic modified to support packets from BBS's with 8 characters
  129.     names, and with 2 digit TE/2-style collision suffixes.    For example,
  130.     NERDNOOK.QWK;99 could not be opened, renamed or passed to MQWK.CMD
  131.     when merging packets.  This appears to be working better.
  132.  
  133. o    Another error dialog has been added.  This one agains warns if the
  134.     working directory has been specified on a different-but-valid drive
  135.     (a potential problem).    There's even one more problem to detect; as
  136.     MR/2 requires the work directory to be a subdirectory off of its
  137.     "base" location. This would occur rarely, and is not destructive,
  138.     whereas the one that are now detected and avoided were.
  139.  
  140. o    Added a third level sort to the subject thread sort procedure.
  141.     Threads are now sorted by Subject, then date/time, then message
  142.     number.  As reported, split message all may have the same date/time,
  143.     and this usually assures that they appear correctly.
  144.  
  145. o    Editing a message header, then requesting to "pick a conference"
  146.     from the master list.  Previously, typing letters did not jump to
  147.     the first prefix match.  Fixed.
  148.  
  149. o    Add in a new INI parameter for myself - FolderOrder.  This has the
  150.     same parameters as MessageOrder, but allows a different sort to be
  151.     applied to the ReplyLog and Inbasket.  I found myself constantly
  152.     converting these folders to date/time sort, so I decided to add
  153.     an option to default the sort for just these folders.
  154.  
  155.     NOTE:  By default, FolderOrder = -1, which means that the
  156.     MessageOrder is used.  Sort orders will work the same for everyone
  157.     unless they specify this option specifically.
  158.  
  159. o    Further modified the message sorting ... if DATE/TIME sort is active,
  160.     a secondary sort level of message number is activated.    Same reasons
  161.     as it was added as the 3rd level on subject sorting.
  162.  
  163. o    Revamped the INI parser once again.  My while() loop kept growing,
  164.     and I kept breaking the compiler.  It's now broken into two
  165.     separate routines, which gives me plenty of room for expansion, but
  166.     also increases the possibility that bugs have been introduced.
  167.  
  168.  
  169. Changes included in v2.1
  170. ------------------------
  171.  
  172. o    I found rather large memory leak when using the internal editor.  It
  173.     seems that the cleanup routines ... something I've never looked at
  174.     before and always *assumed* were just fine (NOTE: the editor started
  175.     as a third party editor "toolkit", which I have modified extensively).
  176.     Well, the cleanup routine was empty; totally empty.  I added about 8
  177.     free() calls to release committed but unneeded memory.    I found this
  178.     when I went to add the "cleanup" counterpart for:
  179.  
  180. o    The internal editor now has an undo capability ... unlimitted levels.
  181.     I keep a record of all block delete's and CTRL-X line deletes.  You
  182.     can use CTRL-U to insert the text in reverse order of the deletes.
  183.     Inserts are always to the current cursor position.    In a way, this can
  184.     be used as an intra-document cut/paste.  Each of the two editor buffers
  185.     has its own undo-delete list.
  186.  
  187.     Let me know if you can think of any other place to store text for
  188.     "undoing".  I'll look through the code for more possibilities, too.
  189.     NOTE that I do *not* pay attention to presses of the delete key (for
  190.     removing a character at a time).
  191.  
  192.     NOTE:  CTRL-U previously would delete a marked block.  There are
  193.     several other ways to do this, so I remapped this key.    I hope
  194.     this won't confuse anybody :)
  195.  
  196. o    Well, I finally had to fix the long-time Zortech file open bug,
  197.     instead of dodging it.    ZTC's fopen(), the call used often to open a
  198.     file for reading and/or writing would NOT return NULL on error.
  199.     This is a C/C++ standard - to return NULL if an open fails.  I
  200.     thought this was just a problem on open-for-reads, but I find that
  201.     opening a file for write that fails (a bad file name or path, for
  202.     example) STILL returns an "ok" value.  This was masking the real
  203.     reason one user's VC's were crashing.  Not that I know the real
  204.     reason, yet, but the diagnostics that have always been there can now
  205.     work.  I cleaned them up further, and tested them using a hand-made
  206.     bad file name.    In this example, instead of crashing whenever the VC
  207.     thread hits its first message, a polite failure message *should*
  208.     display on the screen.    The VC process will terminate if ever an
  209.     open fails.  Now, to see what file name this user's system is trying
  210.     to open ... :)
  211.  
  212. o    I love the Internet! :)  In a single 24 hour period, I was able to
  213.     exchange private mail with the aforementioned user a couple of
  214.     times, actually upload a test MR2.EXE to his machine via ftp (I
  215.     don't yet have personal access like this - a friend "demoed" it to
  216.     me :).    There was still enough time to get the tell-all error
  217.     message back from him!
  218.  
  219.     If you specified a fully-qualified WorkPath, either in the INI file
  220.     OR on the command line (for example, WorkPath=C:\mr2\Work or
  221.     /WC:\mr2\Work, the VC index building process would crash.  I now
  222.     handle this for both cases.
  223.  
  224. o    In testing the above, I happened to try a drive/path that didn't exist
  225.     at all.  I used /WJ:\mr2\tmp, where the J drive is non-existent on my
  226.     machine.  I picked a packet (of pickled peppers? ... oh, sorry, long
  227.     day :), MR/2 pathed to the defined work dir, which of course failed,
  228.     and then proceeded to clean out the directory.    The directory it
  229.     cleaned out happened to be my MR/2 home directory (source code and
  230.     all).  Bummer!    Good thing I keep great backups and hadn't done much
  231.     work since I backed up!
  232.  
  233.     And I remember arguing with a user publicly that MR/2 wouldn't
  234.     delete files unless the chdir succeeded.  Ooops.
  235.  
  236.     NOW, if the change directory fails, a nice 10-12 line dialog box
  237.     pops up, explains the problem, shows you your workpath, then
  238.     promptly exits w/out deleting a single thing.
  239.  
  240. o    Modified the edit header logic slightly.  When editing a message
  241.     header where the original message's "from" field is blank, MR/2
  242.     now tries to use the @Internet@ value for the TO field.  I've
  243.     received mail before this way, and when I replied, my message had
  244.     a blank TO field and was uploaded to the BBS this way.    The message
  245.     made it to its destination, but since PCBoard views a blank TO as
  246.     being equivelant to "ALL", everyone else on my BBS could read it.
  247.     In other words, it was not PRIVATE on my home board.  Since PCBoard
  248.     ignores the TO line if there's a TO: line in the message, I could
  249.     have put anything there, but the INTERNET address (truncated) seemed
  250.     appropriate.
  251.  
  252. o    Minor internal editor fixups ... things like names on the top of both
  253.     editor windows are correct and stay that way, the search prompt
  254.     now stays at the title bar or the "owner" window.
  255.  
  256. o    I modified the Editor=Internal INI options to accept another
  257.     parameter.    Editor=Internal,FullScreen (or just the work "FULL")
  258.     puts the editor into full-screen mode.    This uses ALL display lines
  259.     when editing a file instead of leaving the source message header
  260.     displayed.
  261.  
  262. o    When switching the Editor specification in MR2.INI back and forth
  263.     between Internal, ME/2 and/or an external editor, MR/2 would
  264.     sometimes ignore the requested change until restarted from scratch.
  265.     This works much better now, except ME/2 still doesn't shut down
  266.     after it is no longer the requested editor.  Minor nit - I'll fix
  267.     it eventually.
  268.  
  269. o    When MR/2 packs the folders, a check is made to see if the folder
  270.     file is empty (size equal to 128 bytes).  If it is, the file is
  271.     removed.  Also, MR/2 will try to remove any BBS-specific folder
  272.     directory on packet exit.  If the directory has *anything* in it,
  273.     the remove will fail (as it's supposed to).  If empty, as is
  274.     sometimes the case, the directory will disappear.  This will prevent
  275.     the system from collecting directories for BBS's for which no data
  276.     is stored in a folder.
  277.  
  278. o    Subject sorting was modified to make DATE/TIME the secondary sort
  279.     field, rather than message number.    I made a bold assumption that
  280.     the other way would never really give the desired affect and that
  281.     (as many have requested), DATE/TIME is indeed the proper second
  282.     sort option.  If anyone disagrees, please speak up and I'll add
  283.     BOTH choices as options.
  284.  
  285. o    When using the INI parameter SourceFile, MR/2 now starts in the
  286.     reply buffer with ALL of the text in the source file marked.  A
  287.     simple ALT-C or ALT-M will copy/move the block into the reply.
  288.  
  289. o    The default template file  "Subject:" line for NewInternet was
  290.     changed from @ISUBJECT@ to @SUBJECT@.  This will keep MR/2 from
  291.     "inventing" long internet subjects and will instead insert the
  292.     SUBJECT value from the message header.    You can modify the subject
  293.     in the message while editing, if desired.
  294.  
  295. o    Another memory leak plugged - this time in deleting the list of
  296.     conference message headers.  There was also an unneeded call to
  297.     lookup and format the Conference name in this loop.  This was
  298.     removed (microscopic speed improvement).
  299.  
  300.  
  301. Changes included in v2.09A
  302. --------------------------
  303. Another short-lived release; v2.09 had a serious bug.  I offer this
  304. release quicker-than-planned to ward off potential problems.  I still
  305. plan on a bunch more minor fixes, fixing anything else that turns up
  306. wrong with the next internal editor changes, and releasing v2.1 in,
  307. say, another week?
  308.  
  309. o    Modified the folder-packing process.  This procedure often left
  310.     unattached "source" messages in the log well after the parent
  311.     message was gone.  I've written a little checker/diagnostic utility
  312.     to help me watch how well this works, so I'll be watching closely.
  313.  
  314. o    Ooops!    Ctrl-S from within the internal editor did nasty things.  It
  315.     did save the work to disk, but then it closed the file and cleaned
  316.     up.  This caused later saves to fail.  Fixed.
  317.  
  318. o    Initial MR/2 startup now uses the internal editor instead of E.
  319.     Don't know why I didn't switch to this before.
  320.  
  321. o    MR/2 used the E editor as the default if not specified.  Now it's
  322.     the internal editor.
  323.  
  324. o    Modified the help subsystem slightly - HELP works when editing the
  325.     INI file with the internal editor.
  326.  
  327. o    Modified the default colors specified in the default MR2.INI file.
  328.     Message text was in yellow, now it's in bright-white and the HEADER
  329.     data is in yellow.    I like this better.
  330.  
  331. o    Modified the default first-time startup code to copy example.tf to
  332.     template.tf, if template.tf is not found.  Template.tf is the default
  333.     template file specified in MR2.INI.  Previously, if a new user did not
  334.     put out the effort, templates would not be used ... the INI simply
  335.     specified a template file that did not exist.  Now one *will* exist.
  336.  
  337. o    Modified the example.tf file and removed all references to my name :).
  338.     In place of my name, I've inserted the string @Mix@@UserName@.  This
  339.     takes the user name from the QWK packet, mixes the case and signs
  340.     all message that way.  For "Reply-To:" lines in internet templates,
  341.     I simply left this blank.  If the user gets this far, he can edit the
  342.     template and fill this in himself.
  343.  
  344. o    Another pathing patch so that, when using ME/2 as your editor, pressing
  345.     ALT-C to edit MR2.INI works ok.
  346.  
  347.  
  348. Changes included in v2.09
  349. -------------------------
  350.  
  351. o    Better protection and diagnostics for read_line overflows.    All of
  352.     my sequential file (text) access to read a "line" are now protected
  353.     by a "max" count value.  If this value is met, a crude warning is
  354.     displayed, a keypress is requested, and the line is truncated.    This
  355.     has been the suspected cause of a large number of unsolvable crashes
  356.     ... any files that gets corrupted or modified when CR/LF's are
  357.     removed can cause this.  Now, at least there is a warning, some
  358.     information, and no crash.
  359.  
  360. o    Trying to solve an obscure VC crash for a user, I made minor changes
  361.     to the VC search process.  Just for my information/reference later :)
  362.  
  363. o    Ooops.    I temporarily saved the SplitLongReplies value in a character
  364.     variable.  That caused overflow/rounding, so that specifying 300 line
  365.     messages resulted in 44 line messages (300-256=44).  You could not
  366.     get messages longer than 256 lines.  Fixed.
  367.  
  368. o    When saving a message (or BBS file) to a save file, entering a bad or
  369.     invalid file name would show no error message or indication of a
  370.     problem, even though the save failed.  This has been corrected to where
  371.     MR/2 will beep and stay at the file name prompt until a valid save file
  372.     name is specified, or ESCAPE is pressed.
  373.  
  374. o    I somehow readded the problem where matching conference names failed to
  375.     insert the second name in the master conference list.  This is, again,
  376.     fixed.
  377.  
  378. o    If you opened a packet with existing replies, unpacked them, then killed
  379.     all replies (so no active replies remained), MR/2 would exit and leave
  380.     the original reply packet intact.  It is now removed (renamed to a .old)
  381.     and none of the killed replies are registered in the reply log.
  382.  
  383. o    Cosmetic: left over garbage in background when a "no packets exist"
  384.     box is displayed has been removed.
  385.  
  386. o    If no BBS .cfg files existed, MR/2 would display a message about
  387.     not having any QWK packets available.  Fixed.
  388.  
  389. o    Internal editor work - LOTS of it :).  I'm not telling yet! :)
  390.     (Just in case bugs are found with what "used to work" ...)
  391.  
  392. o    Ok, fine.  I'll tell you about the editor.  I'll put this out for
  393.     some user-testing, then issue v2.1 when it appears all the kinks are
  394.     out.  I will add INI variables to specify full screen editing (all 25
  395.     lines) and initial split-window sizing.
  396.  
  397.     - Optional 2-buffer, split window editing.
  398.  
  399.     First, if you add the INI parameter SourceFile=somename.txt, MR/2
  400.     will automatically go into full screen, split window editing mode on
  401.     reply.    If you don't do this, the editor starts off looking the
  402.     same, but new keys are enabled:
  403.  
  404.     CTRL-O     Open a new file (in the secondary buffer only)
  405.              prompts for file name, asks if save old one if modified
  406.              *This ALWAYS opens the file into the TOP, extra window/buffer*
  407.  
  408.     CTRL-D     Divide the editing screen into 2 equal parts
  409.     CTRL-C     Close/Hide the current editor Window (if split only)
  410.     CTRL-G     Grow the current window to full size (if split only)
  411.     CTRL-S     Save the current file
  412.  
  413.     CTRL-UP       Move the divider bar up one line
  414.     CTRL-DOWN      Move the divider bar down one line
  415.     CTRL-PAGEUP   Expand the bottom window all the way
  416.     CTRL-PAGEDOWN Expand the top window all the way
  417.     ALT-N          Give the NEXT editor buffer the focus
  418.                     (split or two full screens - Shift F3 works, too)
  419.  
  420.     ALT-C will now copy *across* windows.  If nothing is marked in the
  421.     current window, the other window is checked for a mark.  ALT-M will
  422.     do the same; if text is not highlighted in the current window, it
  423.     will check the "other" window, cut the marked text and paste it to
  424.     the current cursor position.
  425.  
  426.     Sorry, I had to change some things:
  427.  
  428.         FIND was remapped to CTRL-F (from CTRL-S)
  429.         FIND NEXT was remapped to CTRL-N (from CTRL-F)
  430.  
  431.     And, for compatibility with ME/2:
  432.  
  433.         ALT-X     Save and exit whole editor.
  434.  
  435.     If you don't do the SourceFile thing, then you can still open CTRL-O
  436.     a file or two for reference.  For example, just today, I CTRL-O
  437.     opened MR2.DOC and cut a couple of lines from that.  Same with a
  438.     snip from pmmle.h.
  439.  
  440. o    Editor Help screen updated to show new key functions, also now includes
  441.     clipboard access keys.
  442.  
  443. o    ME/2 USERS:  I fixed it now so that ME/2 is initially loaded *after*
  444.     MR/2 switches the path to the working directory.  This means that
  445.     the old ME/2 "erc 100 - reply.msg" error due to a pathing problem is
  446.     fixed by default.  Your old INI ReplyFile specs will work.    If you're
  447.     not using ME/2, this change *will not* effect you.
  448.  
  449.  
  450. Changes included in v2.08
  451. -------------------------
  452.  
  453. o    By request, and it made sense, the conference name is displayed
  454.     at the top of the message index screen.  I simply show the
  455.     "packet id" string that is optionally shown on the message viewing
  456.     screen.
  457.  
  458. o    I noticed that the reply header editing screen still was using that
  459.     aweful light red color (on top of white) for the current field.  I
  460.     changed this to normal red, and I think it's much easier to read.
  461.  
  462. o    Also by request, when MR/2 clears the screen to pack replies, a
  463.     simple message is posted informing you of this.  On some system,
  464.     the delay was significant, and with the screen totally blank,
  465.     confusion resulted.  The message is simple and modest; I depend on
  466.     the archiver to write to stdout, and pretty-stuff wouldn't scroll
  467.     off the screen nicely.
  468.  
  469. o    MR/2 would sometimes "lock up" when moving backwards through message
  470.     by thread (using Ctrl-PageUp or backspace).  This has been fixed.
  471.  
  472. o    Importing text into the internal editor (Alt-R) would often result
  473.     in the cursor being shifted to the right one character from where
  474.     keypresses would insert characters.  This has been fixed.
  475.  
  476.  
  477. Changes included in v2.07
  478. -------------------------
  479.  
  480. o    Minor changes - mostly in the interface and communications between
  481.     my external PM editor, ME/2.
  482.  
  483.  
  484. Changes included in v2.06
  485. -------------------------
  486.  
  487. o    Rime-routed messages that were long enough to be split missed the
  488.     auto-routing line placement logic on secondary parts.  I was looking
  489.     for too exact a match on "RIME".  Also, I keyed on "Postlink" within
  490.     the original message to tell if it was routed.    Editing the header on
  491.     pass two, the original message was no longer available.
  492.     Anyway, fixed :)
  493.  
  494. o    Added support for ME/2, a PM-based editor I've been playing with.
  495.     ME/2 is an MDI-based editor with toolbar, statusbar, multiple
  496.     file windows, speller, thesaurus, simple printing ... tons of
  497.     features.  I'm putting it out at the same time as this (ME2_099.zip).
  498.     If you use ME/2 as your editor, it is preloaded by MR/2 on startup.
  499.     MR/2 can control it using IPC tricks, so response is better than
  500.     you'd get with any normal PM editor.  Session switching back and
  501.     forth is handled automatically.  See the me2.doc file included with
  502.     the ME/2 distribution zip.
  503.  
  504. o    INI parameter added - "SourceFile".  If specified, a source message
  505.     that is being replied to will be quoted to this file, and the actual
  506.     reply file will contain no quoted text, just an empty template
  507.     read-to-complete.  This is used by ME/2 as an option, and may be
  508.     useful for other setups.
  509.  
  510.  
  511. Changes included in v2.05
  512. -------------------------
  513.  
  514. o    Resolution of the source Internet address enhanced slightly.  I moved
  515.     the check for PC-Boards @From: specifier before some of the others, as
  516.     if this line is there, it's much more reliable than searching for the
  517.     tokens like "From: ".  Some of my recent replies detected invalid
  518.     Internet addresses.  This should help. (After a couple of replies,
  519.     it does! :).
  520.  
  521. o    Setting extended attributes on packets stored on a LAN Server network
  522.     drive would actually modify the datestamp.    I added code to query the
  523.     original date/time and then reset this *after* the EA's were applied.
  524.     Seems to behave properly now.
  525.  
  526. o    I screwed up and overwrote a large, completely unread packet tonight.
  527.     I was bummed.  But wait!  I now save the PTR file and can reset my
  528.     pointers!!    Only ... MR/2's saving mechanism seems to have been broken
  529.     and I uploaded a 3 month old file.    Needless to say, I got more messages
  530.     than I needed!    What a mess ... I had to reset all my pointers by hand
  531.     and I know I missed some mail.    I then fixed the date compare of PTR
  532.     files.    They should overwrite the existing one now, if newer, and do
  533.     it correctly.  For whoever it was that reported this and that I
  534.     ignored ... you got your revenge!
  535.  
  536. o    MR/2 would crash when you pressed escape from the "NO PACKETS FOUND"
  537.     message.  Had something to do with the aggressive optimizations.  I've
  538.     "unoptimized" a bit until I can figure this out.
  539.  
  540. o    I made a slight goof when I fixed the recursive variable replacement
  541.     in the last release.  I made it so any *real text* with an "@" in it
  542.     would get removed, whether it had a "\" proceeding it or not.  You see,
  543.     the "\" would *not* be there the second pass, so the "@" was unprotected.
  544.     If there was a string between two @'s, this would be removed too, as
  545.     it was assumed it was an invalid variable name.  I now leave unresolved
  546.     variables in the text as-is.  This bug effected mostly fidonet
  547.     and internet addresses.  Fixed.
  548.  
  549.  
  550. Changes included in v2.04
  551. -------------------------
  552. NOTE:  This version includes alot of optimization from compiler switches
  553. and from some rearranging of localized code.  I used it personally for
  554. several weeks, and the only "problems" I saw were minor video (cosmetic)
  555. issues ... like a "black hole" for a second or two when one of the "use
  556. existing?" prompts comes down.  I'll track this, but you may see it until
  557. the next version.  The fixes in this release are beneficial, and the
  558. video problems just minor and cosmetic.
  559.  
  560. I've also traced some recent slow downs to the folder subsystem; packing
  561. log files and building indices in particular.  I do this way too often, and
  562. it takes too long.    I will spend some time on these shortly, attempting to
  563. hit the disk far less than happens currently.
  564.  
  565. o    New INI variable "ALIAS" allows you to set a user name for yourself
  566.     other than the one found in the BBS Control.dat file.  This alias
  567.     name will be placed in the FROM field of all your replies.    Best used
  568.     in a "local", BBS-specific INI file when accessing multiple BBS's.
  569.     For Example:  Alias=Billy-Bob will override the settings in Control.dat
  570.     (say for this example the BBS name was "William B Gooden").  Replies
  571.     would come from Billy-Bob.
  572.  
  573. o    Turns out that the @variable logic was not as recursive as I had
  574.     advertised.  For example, inserting a "phrase file" line that
  575.     contained yet another variable to replace did not work.  It does now :)
  576.  
  577. o    Fixed a crash when modifying replies (changing, killing ...).  If the
  578.     subject happenned to end in column 25 with a number BUT not be a
  579.     "split reply", MR/2 would crash looking for the "/" in "x/n".  For
  580.     example "OS/2 <...> 2.11" would cause this crash to occur.
  581.  
  582. o    Reply log would not always be accessible without an existing packet.
  583.     If you had no messages in your inbasket or replies for a specific
  584.     BBS, ALT-E (No packet entry) would not allow access to the reply log.
  585.     Fixed.
  586.  
  587. o    Some major under-the-hood work.  I played around with some compiler
  588.     switches that have always been there, but have remained undiscovered
  589.     until now. <read: it sometimes pays to read the manual, even if
  590.     it's 3 years late :>.  I've compiled MR/2's code, including the
  591.     speller, thesaurus and editor, with 286-or-better code generation
  592.     turned on.    The 386 code generator caused problems, and I still have
  593.     some v1.3/286 users.  One day I'll go full 32-bit, but not yet :)
  594.     Also, I turned on some aggressive optimizations.  I also recompiled
  595.     the ZTC tools with these switches.    I tried the C runtime library,
  596.     but it showed some bad signs, so I switched back.
  597.  
  598.     All this does is provides a little more snap, and a 12k reduction
  599.     in EXE size.  Nothing revolutionary, but every bit helps.
  600.  
  601.  
  602. Changes included in v2.03
  603. -------------------------
  604.  
  605. o    ADD/DROP still had a problem whenever the DOOR and CONTROLNAME
  606.     specifiers did not match (in dorr.id).    Fixed.    Cammail-Gold door
  607.     configuration now works.
  608.  
  609. o    Reply logging would work wonderfully ... until you started replying
  610.     to subsequent packets into the same REP file.  In other words, if
  611.     you had a week's worth of packets (as I ended up having), and rifled
  612.     through ALL of them without uploading replies, only the replies from
  613.     the first packet would be logged.  I fixed another bug after that
  614.     having to do with source messages, but this wasn't relevant until
  615.     the other bug was tackled.
  616.  
  617. o    Killing replies with multiple parts:  fixed the bug that killed the
  618.     WRONG messages.  Big bug (sorry), but it works now.
  619.  
  620. o    Fixed some problems and made some enhancements to the Fidonet node
  621.     detection logic (replacing @FIDONET@ with the source message's
  622.     fidonet address).  Three digit zones are now supported where two
  623.     digits was the previous max (800:676/23).  There was a problem with
  624.     "@" symbols as part of the Origin line text - fixed.  I also now
  625.     attempt to extract the Fidonet address from a source message format
  626.     that I had never seen before.  This format came from a source on
  627.     the NITELOG BBS, one which is home to many MR/2 users.    I now
  628.     look for and use the "Reply:" line when found in a source netmail
  629.     message.
  630.  
  631. o    When using U to UNMARK a message (to unkill a reply, for example),
  632.     the INDEX markings would not be removed.  Fixed.
  633.  
  634. o    Reports of sporadic crashing:  some users have emailed me with
  635.     crash-reports and supplied debugging addresses.  Often these
  636.     point me right to a problem.  I have a couple of addresses that
  637.     are in general routines, and the information supplied is not
  638.     helping.  I haven't forgotten you!  I'm looking for these and
  639.     trying to come up with another way to find these.  I am also
  640.     changing the way I archive older version so as not to "lose"
  641.     the chance of making sense out of info from these older version.
  642.  
  643.  
  644. Changes included in v2.02
  645. -------------------------
  646.  
  647. o    Modified the after-packet-selection processing so that a local
  648.     INI might be loaded *before* the unzipper is called.  I've always
  649.     held that MR/2 can't know the true BBS name until the packet is
  650.     unzipped and the control.dat file is parsed.  What happens now is,
  651.     as soon as a packet is selected, a "base name" is derived from
  652.     the packet name.  For example, "e:\dl\pc-ohio.qwk;12" would be
  653.     whittled down to "pc-ohio".  If an INI file is found with this
  654.     base name, it is instantly loaded.    Again, this is *before* the
  655.     packet is opened, so that BBS-specific unzippers can be identified.
  656.     If an INI cannot be found matching this derived name, then MR/2
  657.     tries again, the old-fashioned normal way, after the packet has been
  658.     opened.  If one is found on the first try, no secondary loading is
  659.     performed.    This *should* work in most cases, particularly when
  660.     OS/2 comm packages are used.
  661.  
  662.     NOTE that this is *still* too late to identify a different "working"
  663.     directory.    MR/2 has already changed the default path by this time.
  664.  
  665. o    Mouse hot spots on message viewing screen changed a little.  I made
  666.     clicking on the word "Subject:" equal to pressing the "Q" key and
  667.     anywhere after the ":" and up to the "Conf:" word is still the same
  668.     as pressing "H".  This adds easier access to the Q key.  Previously,
  669.     the entire area was mapped to the "H" key.
  670.  
  671.     While I was at it, I added three more hotspots.  The only correlation
  672.     between word and feature is that the word starts with the same letter
  673.     as the feature.  That's how I picked the area :).  Click on the "Ref#"
  674.     area to "R" Reply.  Click on the "Date" area to "D" defer.  Click on
  675.     the "Status" area to "S" Save.
  676.  
  677. o    That pesky lockup that occured when marking and deleting a block
  678.     up to and including the EOF marker has been squashed.  I could easily
  679.     recreate it here, now it seems to be handled.  I simply make sure that
  680.     the end mark can't be placed on or after the EOF triangle.
  681.  
  682. o    Bug:  With PositionOnMatch set to NO, the key-word highlight would
  683.     also be suppressed for virtual conferences.  Now the keywords hilite
  684.     regardless of the setting of this switch.
  685.  
  686. o    By request ... remapped the numeric keyboard "5" key, when not in
  687.     numeric mode (arrows are active) to be equivelent to the ESCAPE key.
  688.     As was pointed on, one can now do most message selection and
  689.     reading/movement functions from just the numeric pad.
  690.  
  691.  
  692. Changes included in v2.01
  693. -------------------------
  694.  
  695. o    Trying to open the WELCOME.QWK packet in the home MR/2 directory
  696.     caused a trap and terminated the program.  This was caused because of
  697.     an error in the code that checks for the "\" character in the packet
  698.     file name.    If one wasn't there, it would crash.  Fixed.
  699.  
  700. o    If a bad "working directory" was set in an icon, MR/2's background
  701.     searching virtual conference builder would crash.  I've fixed this,
  702.     although some questions remain.
  703.  
  704.  
  705. Changes included in v1.99cx thru v2.00
  706. --------------------------------------
  707. Well, this is the long awaited v2.0 release!  As usual, I wish I
  708. would have had *just another week*, but I'm already 10 weeks late
  709. from my original Jan 1 target.    I'm sure there will be some quick
  710. updates as this hits the streets and some more bugs shake out.
  711. I've got to at least get to v2.03 soon, so as that Steve fellow that
  712. still uses v1.03 in Fido's OS/2 conferences will finally upgrade :)
  713.  
  714. Lots of exciting things still to come.    I just added CLONING as an
  715. experiment, and there's lots of potential here.  Multiple sessions
  716. for different BBS's has been working ok; also has more potential.
  717. I'm personally in desperate need of a more complete folder setup.
  718. This means some type of database capability - entirely optional and
  719. user defined.  I will be collecting ideas, requests and suggestions
  720. for subsequent versions.  If I didn't get to something you want or
  721. need, feel free :)    I *do* have every piece of correspondence ever
  722. sent to me, and I will pass through this yet again.
  723.  
  724. o    More work on the manual - 91 printed pages.  Updated several
  725.     sections and the corresponding table of contents entries.  No
  726.     index yet, but I plan on keeping this more up-to-date than it's
  727.     been in the past.  I also plan a more nicely formatted version
  728.     for those that want more than just ASCII text.
  729.  
  730. o    Modified MR2INI.ORG extensively.  This is the default INI file
  731.     that is copied to MR2.INI the first time you bring up MR/2.
  732.     Mostly a rearrange; I divided the file into sections:
  733.     Basic setup, Reply/Quoting, Intermediate, Advanced and Misc.
  734.     Some explanation at the front of the file, with notes to
  735.     reference SEARCH.INI and EXAMPLE.TF where appropriate.
  736.     Much cleaner.  I hope this helps new users get going more
  737.     smoothly.
  738.  
  739. o    Added more examples to SEARCH.INI, focusing on some of the
  740.     newer and more power virtual conference features.
  741.  
  742. o    Added mr2icons.zip to the distribution zip (7k).  Several misc.
  743.     MR/2 and MR/2 PM icons provided compliments of long-time
  744.     registered user John Bales.  Thanks John!
  745.  
  746. o    Fixed a bug where, when killing certain replies, MR/2 would
  747.     seem to hang, but then come back.  There was an uninitialized
  748.     counter under certain circumstances.  This caused a loop to
  749.     "do nothing" for some random amount of time until the counter
  750.     ticked down.  In the debugger session where I discovered this,
  751.     the counter was set to 27,000+.  It took about 2 minutes to
  752.     come back.    Fixed.
  753.  
  754. o    Spaces within an address-book "tag" field would keep the address
  755.     from being selectable from the pick-list.  Fixed.
  756.  
  757. o    WPS Associations referencing .REP files would fail, as would
  758.     referencing a .REP file on the command line (same thing).
  759.     This works now.
  760.  
  761. o    Fixed a problem where the reply packet would often be rezipped
  762.     even though no changes were made to it.  This happened when
  763.     using no-packet entry and when selecting a .REP file directly
  764.     from the packet selection screen.
  765.  
  766. o    Fidonet addresses that had two digit ZONES (e.g., 40:383/1) were
  767.     not working properly.  The zone was seen as only the last digit.
  768.     Fixed for two digit zones - sorry, I didn't even know they
  769.     existed :)
  770.  
  771. o    Address book:  when selecting an address specified as private,
  772.     either through the pick-list of by direct "!tag" identifier,
  773.     the private flag would often remain public.  Fixed.
  774.  
  775.  
  776. Changes included in v1.99bx
  777. ---------------------------
  778.  
  779. o    When using the /I or /W command line parameters (to open a
  780.     second MR/2 session, for example), MR/2 would exit when the first
  781.     packet was exited.    Now it correctly returns to the packet select
  782.     screen.
  783.  
  784. o    A user noticed that the highlighted item on the message index screen
  785.     was a little difficult to read.  In checking, I found that I used
  786.     "light red" for foreground.  Normal "red" is now used and the text
  787.     appears slighlty sharper and easier to read.  This effects most
  788.     Blue selection boxes and confirmation prompts.
  789.  
  790. o    I *really* didn't want to do this so close to a scheduled major
  791.     release.  In fact, I don't know if I'll even try to finish this for
  792.     v2.0, as to get it just right may take some time and experimentation.
  793.     Cloning a session.    It works, but there are tons of "how should this
  794.     be handled questions".  Read the next two entries.
  795.  
  796. o    New command line switch - /Clone or just /C.  This *assumes* that
  797.     a packet is already open in your default (or overridden with /w)
  798.     working directory.    This mode simply "uses existing packet",
  799.     sets "go to last read position" and opens MR/2.  When the packet
  800.     menu is exited, you exit the program without cleanup.  This is for
  801.     use with an already running MR/2, so as to allow reading of the
  802.     same open packet in another session.
  803.  
  804. o    Added some preliminary function keys to the MR/2 message viewer.
  805.     CTRL-F1 "clones" a windowed session.  CTRL-F3 clones full screen.
  806.     This opens a second copy of MR/2, using the existing packet.  This
  807.     allows for multiple windows or session reading independently.
  808.     The cloned window will not cleanup files, will not have bookmarks
  809.     recorded (they are currently lost when session is closed).
  810.  
  811.     I just cloned three additional sessions from one "main" session.
  812.     That's 4 windows into the same packet.  This is *too* neat.
  813.  
  814.     This will take more thinking, but it's already been useful to me,
  815.     so I'll let this out for others to experiement with.  Some problems
  816.     for me to resolve (and that means others should feel free to
  817.     influence me :).
  818.  
  819.     Is it too restrictive to only let replies be generated from the
  820.     "master" session?  Hmmm.  I've having some brainstorms here.  I'm
  821.     going to sleep on this one.
  822.  
  823.     NOTE:  I've already thought this out to a level that's way too
  824.     complicated to finish for v2.0.  I will complete this code after
  825.     v2.0 is released, and I will take suggestions in the meantime.
  826.     So, while this feature will be left for those who wish to
  827.     explore it, it will remain undocumented and "unsupported" for
  828.     v2.0.  I just don't want to rush to fix bugs in this right now.
  829.  
  830.     ALSO NOTE:    Each cloned window is a child of the session doing
  831.     the cloning.  If you close the parent, the clildren disappear,
  832.     too.  There are so many possibilties here, and so may possible
  833.     problems :).
  834.  
  835. o    Fixed a minor problem with selection lists where, when paging down
  836.     at the end of the list, the cursor would sometimes move up or down
  837.     the list, but not land on the last entry.
  838.  
  839. o    Mouse cursor would sometimes leave a "black hole" on blue prompt
  840.     boxes.    In fact, mouse cursor was not visible for these boxes unless
  841.     first moved.
  842.  
  843. o    Read.me file:  removed pre v1.95 material.    I will make all complete
  844.     modification logs available on Nerd's Nook sometime after v2.0 is
  845.     released.
  846.  
  847.  
  848. Changes included in v1.99Ax
  849. ---------------------------
  850.  
  851. o    Phantom "killed" status would sometimes show up in the corner of
  852.     the messge viewer when reading inbasket/logged messages.  The
  853.     messages was often active, and the status report in error.    I've
  854.     fixed this.
  855.  
  856. o    More manual work.  Checked for spelling mistakes and generated a
  857.     preliminary table of contents.
  858.  
  859. o    Thesaurus - cleaned up all the fancy features.    They didn't always
  860.     work as advertised :(
  861.  
  862. o    Fixed a bug where, upon reentering an "existing", previously opened
  863.     packet, the local INI file was not loaded before parts of the packet
  864.     where reloaded.  This caused things like conferences that were
  865.     declared as hidden to be displayed.  They would be hidden when the
  866.     packet was open the first time, but ALT-X, go back in and they'd
  867.     be listed.
  868.  
  869. o    Added S-Save and P-Print to Bulletins, Files and News viewers.
  870.     Careful, as ANSI codes *are not* stripped before saving/printing.
  871.     Help screen also updated.
  872.  
  873. o    I scrunched the message header form one more time, getting 3 more
  874.     characters for taglines.  That makes a max tag of 69 chars.  When
  875.     I get more energy I'll expand this again.  I figure I can get 3-4
  876.     more, but I'd have to rework the whole form.  Not something I care
  877.     to do at this time.
  878.  
  879. o    Ouch!  Big problem with ADD/DROP logic; whether using the default
  880.     door name or a INI-declared name.  Both Subject and To fields
  881.     in the message header received C-type (zero terminated) strings
  882.     instead of QWK formatted, fill-with-spaces strings.  I'm sure this
  883.     confused many a mail door and was probably the reason I received
  884.     so many "not working" complaints.  Heck, it confused my message
  885.     index screen!  Sorry :(.  Thanks you to Marc Bourassa for getting
  886.     me enough info to find this!
  887.  
  888.  
  889.  
  890. Changes included in v1.99x
  891. --------------------------
  892.  
  893. o    More manual work, of course.  I'm up to 81 pages and still more
  894.     to do.
  895.  
  896. o    Help screen touch-ups to reflect new keys added in the last
  897.     release or two.
  898.  
  899. o    Added new reply-time replacable template variables:  TargetTo,
  900.     TargetToFirst and TargetToLast.  These are the same as the "TO"
  901.     series, except that TO is replaced by the original messages TO
  902.     and is useful mostly for attribution lines.  It was brought to my
  903.     attention that accessing the target user's name was not available.
  904.     It is now!    Still thinking about Subject and others along those
  905.     lines ...
  906.  
  907. o    Removed MR2.HST from the distribution zip list.  I read it over
  908.     and every feature it describes is now documented.
  909.  
  910. o    Added Hotkeys back to the Edit Message Header screen.  F4 used to
  911.     bring up the tagline picklist, and for awhile F6 brought up the
  912.     Address pick list.    I removed these keys and received some
  913.     complaints.  I've added alternate ways to get to the picklists on
  914.     this screen:  ALT-T to select taglines, ALT-C for conferences and
  915.     ALT-A for addresses (these work from *any* field).
  916.  
  917. o    Added some options for accessing external utilities differently.
  918.     This was partially in an attempt to solve some rare problems with
  919.     either 4os2 or booting from the D:\ drive, or both.  These may
  920.     offer a performance boots in other cases.  Since I just spelled
  921.     this all out in a messages, I'll use that:
  922.  
  923.     For all of MR/2 classic's external utility access, I used the
  924.     system(command) call.  This is a C function that says "load the
  925.     command processor and give it this command".  This is all dependent
  926.     on the comspec being set correctly, and on ZTC's runtime code (which
  927.     did look ok, BTW). Still, BW/2 mentioned being able to run an editor
  928.     and/or pkzip directly, w/o loading CMD.EXE.  I thought for a second,
  929.     and remembered that MR/2 PM does exactly this.
  930.  
  931.     So, I scarfed the Run() function out of my MR/2 PM code and made it
  932.     optionally accessible.    Now, mind you, this gets a little silly and
  933.     is subject to one final change :).    I still call external EXE's the
  934.     same old way ... UNLESS you prefix it with a code or two.
  935.  
  936.     For example:
  937.  
  938.     Editor=q                loads q.exe the same old way.
  939.  
  940.     Editor=!c:\qe3\q.exe    loads a windowed Q.exe on the desktop,
  941.                             running q.exe directly (no cmd.exe
  942.                             involved).    File must be fully qualified
  943.                             with full path specifications.
  944.  
  945.     Editor=!!c:\qe3\q.exe    loads a full screen session w/o loading
  946.                             cmd.exe - q.exe loads directly.
  947.                             Fully qualify the file name.
  948.  
  949.     Editor=!$c:\qe3\dos\q.exe
  950.  
  951.                             loads a DOS windowed session, loading Q.exe
  952.                             directly.  CMD.exe is not accessed, but
  953.                             command.com is.  May still cause D:\ booting
  954.                             problems, but it's an option.
  955.  
  956.     Editor=!$!c:\qe3\dos\q.exe
  957.  
  958.                             Loads the DOS Qedit into a Full screen DOS
  959.                             session w/o accessing cmd.exe.
  960.  
  961.     NOTE that these work with the zipper/unzipper, too, as well as
  962.     PreEdit, PostEdit, F2-F10, etc.,.  Anytime an external util is
  963.     called, I check for these prefixes for special processing.      I
  964.     should have done this a long time ago :)
  965.  
  966.     Since CMD.exe is removed from the loop with these commands, the
  967.     programs should load more quickly.    In fact, they seem to, but it's
  968.     very hard to measure.
  969.  
  970. o    Problem with BackDropMaxLines.    If this maximum line count was
  971.     GREATER than the actual lines in the file, MR/2 would end up
  972.     searching/displaying *past* the end of the buffer.    This caused
  973.     garbage to the screen at best, crashing in most cases.    The GCO
  974.     ANSI Goodbye screen was only 20 lines long, and with the max lines
  975.     set at 24, horrible things would happen.  Fixed.
  976.  
  977.  
  978. Changes included in v1.98x
  979. --------------------------
  980.  
  981. o    Manual work.  It's growing fast.  Enclosed is a new "preliminary"
  982.     MR2.DOC file.  The old manual was 22 pages, this one is 70 or so
  983.     and there's still plenty to add.  Some sections are incomplete.
  984.     No, I haven't checked for spelling errors.  I'm open for comments,
  985.     but don't dig too deeply, please.
  986.  
  987. o    PurgeAfterDays and PurgeAfterCount now actually function.  Here's
  988.     how it works:  When you close a packet, MR/2 has always "packed"
  989.     your InBasket, if any.    This process simply involved passing through
  990.     the InBasket and removing "killed" message by writing over them with
  991.     active ones.  When the ReplyLog was added, the same process was
  992.     performed.    Since the reply log grows with each reply, I added code
  993.     to control the number of messages kept, by maximum age or by maximum
  994.     count, or by both.
  995.  
  996.     If PurgeAfterDays is not specified (or set to zero), no age
  997.     check is performed on replylog messages.  Otherwise ...
  998.  
  999.     The Reply log is first packed the old way with a slight additional
  1000.     check.    If a message is found to be active and older that the
  1001.     cut-off date (older that PurgeAfterDays old), then the message is
  1002.     marked as killed.  The normal removal process follows after this
  1003.     check.    If a message is killed and it has a "source" or "original"
  1004.     message after it (these have special MR/2-internal markings), this
  1005.     is also killed.  Once this pass has been completed, all manually
  1006.     killed and "old" message have been removed, along with any "source"
  1007.     messages recorded with them.  A count of active messages is returned
  1008.     to the packing process.
  1009.  
  1010.     If PuregAfterCount is not specified, or set to zero, no maximum
  1011.     message checking is performed.    Otherwise ...
  1012.  
  1013.     Now, MR/2 compares the active message count to the specified maximum
  1014.     (PurgeAfterCount).    If found to be greater, then the number of
  1015.     messages to delete is calculated.  A new pass is made through the
  1016.     folder, and the oldest messages are marked and deleted until the
  1017.     number of messages to delete has been reached.    Again, if a message
  1018.     is removed, so is its source/original message, if one exists.
  1019.  
  1020.     I will add a way to mark a reply as "permanent".  This will keep
  1021.     the packing routines from removing it.    A permanent message will
  1022.     not be deleted until you manually kill it.    As an additional
  1023.     feature, I want to add an "unkill" key.  I've killed a couple of
  1024.     replylog messages that I didn't want to, and saving them was a
  1025.     real pain.    And I even know how!  I wouldn't expect anyone else to
  1026.     be able to figure this out.
  1027.  
  1028. o    Double confirmation prompt on exiting the editor w/out saving. I
  1029.     lost my last long-winded reply to this gotcha.    If you would press
  1030.     ESCAPE too many times, too fast, while in the internal editor, you
  1031.     would often end up losing any/all changes.    This was because ESCAPE
  1032.     is seen as a request to exit the editor, and the "would you like to
  1033.     save" question, when ESCAPE is pressed, says "No". Two escapes and
  1034.     you've lost any changes.  I've done this more than once by accident.
  1035.     It angered me; I apologize for causing anyone else this frustration.
  1036.     Now, if you escape out of the editor and changes have been made, it
  1037.     asks you if you wish to save them.    If you press ESCAPE, it askes if
  1038.     you're sure, and ESCAPE says "no, I'm not sure" and saves your work.
  1039.     You must press YES or press ENTER to abort changes.
  1040.  
  1041. o    Cutting from a DOS windowed session and pasting to MR/2, using
  1042.     ALT-* fails.  Previous versions would actually crash, leaving the
  1043.     clipboard open and locking up any program that tried to access it
  1044.     afterwards.  I'm still trying to find out why this fails, but in
  1045.     the meantime, I removed the crashing, and the subsequent lockups.
  1046.  
  1047. o    Packing the folders (Inbasket, ReplyLog).  A informative popup
  1048.     window now is displayed while this process performs it's work.
  1049.  
  1050. o    Added a "Make Permanent" key for use within the Reply Log.
  1051.     Pressing "!" will mark the Reply Log message as a "keeper" and
  1052.     the Folder packing routine will no automatically delete this
  1053.     message, nomatter how old it is or how many messages over the
  1054.     maximum exist.
  1055.  
  1056. o    Added an "UnKill" keystroke.  Pressing "U" will remove the "Killed"
  1057.     marking from any message.
  1058.  
  1059. o    New INI parameter - BackdropMaxLines.  This controls the maximum
  1060.     number of lines from the WELCOME and GOODBYE screens will be flashed
  1061.     to the screen.    Some BBS's have ANSI Welcome screens that are
  1062.     multiple pages long.  MR/2 would proceed to flash these messages
  1063.     completely at various times.  Set BackdropMaxLines to 25, for
  1064.     example, to flash only the first screen.  Setting this parameter to
  1065.     zero will suppress the Welcome screen altogether.  The default is
  1066.     set to -1, which will flash any and all lines of the file to the
  1067.     screen.
  1068.  
  1069. o    I think I fixed the problem with crashing when trying to finish
  1070.     out of MR/2 *before* the background searching was finished.  This
  1071.     would not happen if all virtual conferences had been created but,
  1072.     if you would open a packet by mistake and try to quickly get out
  1073.     of it, crash!  This was because I was deleting all the work files
  1074.     before the background process was told to stop ... and it was
  1075.     trying to read messages.dat.
  1076.  
  1077. o    New INI parameters: F2 through F10.  Used to attach command-line
  1078.     actions to function keys.
  1079.  
  1080.  
  1081. Changes included in v1.97x
  1082. --------------------------
  1083.  
  1084. o    I forgot to list the INI options SavePointerFiles, PurgeAfterDays
  1085.     and PurgeAfterCount in the MR2INI.ORG file.  These are now listed.
  1086.  
  1087.     More INI's, as I try to clean up some smaller user problems and
  1088.     requests:
  1089.  
  1090. o    "DoorName" may now be used to identify the target BBS door "user
  1091.     name" to which to address ADD/DROP messages.  This not only aids
  1092.     in the case where a BBS door provides no DOOR.ID file, but also
  1093.     when trying to perform ADD/DROP functions from no-packet entry or
  1094.     reply packet maintenance.  For example, DoorName=RoseMail will
  1095.     address all ADD/DROP messages TO: RoseMail.
  1096.  
  1097. o    "CursorSize" may now be specified for the normal internal editor
  1098.     cursor.  Many users complained that, in certain video modes
  1099.     (large number of lines/screen), and under some setups, the cursor
  1100.     could not be seen.    By default, MR/2's normal editor cursor is
  1101.     1 scanline high (maybe two?).  When lines/screen is 34 or more,
  1102.     MR/2 changes the cursor to 6 or 7 scanlines.  This was reported to
  1103.     still not be visable sometimes.  So, You may now specify the number
  1104.     of scanlines for a normal cursor - from 1 to 13.  MR/2's "overtype"
  1105.     cursor is 13 (14?) scanlines tall and is not configurable at this time.
  1106.     Example:  CursorSize = 10
  1107.  
  1108. o    I did manage to finalize the thesaurus data file.  The "officially
  1109.     released" thesaurus wordbase will consist of 9242 "key" words
  1110.     with a total of 70,101 synonyms.  The technique I'm using makes it
  1111.     easy to find synonyms, even if the word is not found to be a key.
  1112.  
  1113. o    There was a problem with using a MessageOrder of anything BUT
  1114.     subject.  A variable remained uninitialized in all cases except
  1115.     by subject, and this caused crashing as soon as a conference was
  1116.     selected and the message index sort was started.  Fixed.
  1117.  
  1118. o    Selection lists had a bug that wouldn't allow you to select the
  1119.     LAST entry (if the "page" was full).  Clicking on the bottom
  1120.     line of the box did nothing (it's supposed to page down), and
  1121.     clicking on the slot for the last entry on the page paged-down.
  1122.     Fixed.
  1123.  
  1124. o    INI file now includes a default virtual conference.  This will
  1125.     help new users "discover" this key feature much quicker.
  1126.  
  1127. o    Manual has actually been worked on!  No, it's not in here.
  1128.     It's not in *that* great a shape yet, but it's progressing :)
  1129.  
  1130.  
  1131. Changes included in v1.96x
  1132. --------------------------
  1133. Still lots left to do, I'll try to get a summary list together
  1134. and post it next time.    I'm getting close, tho.  Bug reports seem
  1135. to be light, which makes me happy.    I wanted to hit Feb 1st, but
  1136. I'm not sure now.  If I can get a couple of good days in I can call
  1137. it soup.  It will be *very* soon, the manual being the last major
  1138. "feature" to address.
  1139.  
  1140. o    New and Improved help screens.    Added definitions for dozens of
  1141.     previously-unlisted keystrokes and functions.  HELPS include 20
  1142.     or so completely *new* screens, too, covering many of the newer
  1143.     enhancements.
  1144.  
  1145.     NOTE that mr2.hlp is a simple editor file with [TAG] markers to tell
  1146.     me where a help section starts.  The section ends at the next tag
  1147.     marker.  If you don't like my HELP text, you *can* create your own
  1148.     text (modify my descriptions).    A section must fit on the screen,
  1149.     tho, with a char/line or two reserved as border.  Hey, if you end up
  1150.     with something you think is better, send it to me and if I agree,
  1151.     I'll use it :)
  1152.  
  1153.     I start on the manual next - actually already have, but now I have
  1154.     to be serious!
  1155.  
  1156. o    Updated MR2INI.ORG with a section that describes the newest
  1157.     INI variables.
  1158.  
  1159. o    Tab expansion in the message viewer.  I default this to 4
  1160.     characters, but allow you to toggle this value via ALT-TAB.
  1161.     Sequence is 4,8,0,2 where "0" means show the tab character and
  1162.     don't expand.
  1163.  
  1164. o    I discovered that searching while in the INBASKET or the REPLYLOG
  1165.     didn't work.  Searching within an INBASKET has never worked.
  1166.     Fixed this (modified QWK.Getfh()).
  1167.  
  1168. o    By request (several), the spacebar may now be used as an alternate
  1169.     to ENTER for selecting a conference w/mail to read.  This was a
  1170.     tough call, as the ' ' is a valid typing character, and I can see
  1171.     some folks trying to do a conference name prefix jump to the "main
  1172.     board" conference by typing "Main ".  Where this would previously
  1173.     work, and it still *might*, the spacebar press will cause the
  1174.     highlighted conference to now be selected.    Open for comments, I
  1175.     think this will be OK, tho.
  1176.  
  1177. o    It was pointed out to me that many keyboards don't have an F11 key,
  1178.     and that's what I chose as the "mark" key on selection list.  (At
  1179.     this time, "marking" within a list only has a purpose on the packet
  1180.     selection screen, for merging QWK packets.)  After some thinking and
  1181.     experimentation, I made the "*" key a synonym for F11 on pick lists.
  1182.     It was suggested to use + and - to mark, unmark, but the minus or
  1183.     dash often comes up as part of conference and packet names.  So,
  1184.     "jump to prefix" would be affected.  The "*" key will toggle the
  1185.     mark on and off.  This key is easily selected w/o shifting by using
  1186.     the one on the numeric keypad (eeek!  Assuming you have one :).
  1187.  
  1188. o    UNQWK.CMD bug - my first user "fix" to this routine!  Thank you
  1189.     Wolfgang von Thuelen for pointing this out.  In the check for long
  1190.     file names, I ignored the case where file names were exactly 12
  1191.     characters long BUT were still non-FAT names (e.g., "mwcst.qwk;11").
  1192.     The first 'if' statement was changed from "if flongnames < 0" to "if
  1193.     flongnames <= 0".
  1194.  
  1195. o    More thesaurus work - mostly minor cosmetics.  I've almost got
  1196.     what I want, although I know the ALT-S and ALT-L are buugy now.
  1197.     I'm letting it out with these bugs, as it's still functional and
  1198.     I doubt many are using this feature (yet?).  Keys you may press
  1199.     with descriptions are placed above editor window.
  1200.  
  1201.  
  1202. Changes included in v1.95x
  1203. --------------------------
  1204. I'm calling this v1.95x, as I consider myself "close" to what I wanted
  1205. in a v2.0 release.    I do have a few features to add; although not many.
  1206. Believe me, I've got plenty of ideas for v2.01 and beyond.  Existing
  1207. users know that this has never been a static product :).  I've created
  1208. quite a few monsters here ... huge new features that are going to take
  1209. some "shaking out" to get them working perfectly.
  1210.  
  1211. o    Clipboard:    When doing an "append" (ALT-GREY-= or ALT-GREYENTER)
  1212.     to an empty clipboard, MR/2 would crash.  The first text copied to
  1213.     the clipboard had to be done with the ALT-+ command, then appending
  1214.     would work.  Fixed.  You can now append to an empty clipboard.
  1215.  
  1216. o    Reply log messages can now be "Copied" and/or "Replied to".  The
  1217.     message is then copied into the reply conference as to be "sent
  1218.     again".
  1219.  
  1220. o    INI parsing problem prevented FolderPath from being recognized.
  1221.     (Discovered when relinking and testing MR/2 PM).
  1222.  
  1223. o    Mouse could not be used to select the very first entry in a selection
  1224.     list.  This was broken recently - now fixed.
  1225.  
  1226. o    Template Sections labeled as "New" using routing lines:  I had
  1227.     previously noted in this document AND personally corresponded
  1228.     electronically with a few of you about this.  Specifically, *before*
  1229.     this version, the $Body line was needed *before* the routing line,
  1230.     as for "new" messages, only the "signature" sections was placed in
  1231.     the reply file.  THIS HAS ALL BEEN CHANGED.  The 'New' Sections now
  1232.     work the way you would expect; the entire section is placed in the
  1233.     reply file, and the $Body (while still necessary) should be placed
  1234.     where you would normally start your reply.    In other words, these
  1235.     sections should be setup the way you would expect from using the
  1236.     "normal" sections as an example.
  1237.  
  1238. o    Packet selection screen:  You may now MARK two or more packets on
  1239.     this screen and actually MERGE them together as one QWK packet.
  1240.     Use F11 to mark the packets to combine, then ALT-M (Merge) to
  1241.     merge them together.  This process calls upon my new and improved
  1242.     MQWK.CMD REXX command file to do most of the work.    This makes the
  1243.     process configurable/extendable, as long as you want to tinker with
  1244.     REXX source code.
  1245.  
  1246.     Multiple/automatic archiver detection is not supported at this time;
  1247.     the archiver name is hard-coded in the script to be "pkunzip -n"
  1248.     and the zipper is 'pkzip'.  Modify these in MQWK.CMD if necessary.
  1249.  
  1250.     When you press ALT-M, and if 2 or more packets are marked, MR/2 will
  1251.     prompt for a target packet name.  If a name is supplied, all marked
  1252.     QWK packets will be merged into one with this name.  If no name is
  1253.     supplied, MR/2 simply combines the packets in the TMP$$ work
  1254.     directory, where they can be read as a combined packet.  NOTE,
  1255.     however, that bookmarks will be lost, as there will be no "target"
  1256.     packet to record them to.  I suggest always allowing MR/2 to
  1257.     repack the combined QWK packet.
  1258.  
  1259.     FURTHER NOTE:  I've now modified the script so that there is very
  1260.     little reason *not* to repack the combined messages into a new QWK
  1261.     file.  If a name is supplied as a target, MR/2 combines all marked
  1262.     packets and jumps right into "read" mode.  AT THE SAME TIME, I spawn
  1263.     another session, in the background, to archive the combined packet.
  1264.     This becomes invisible to you and should not impede your normal
  1265.     reading operations.  If the combined packet does not show up on the
  1266.     packet selection screen, you may reference MQWK.LOG for possible
  1267.     error messages.  All output from the archiving process is redirected
  1268.     to this file.
  1269.  
  1270.     Index files (*.ndx) are discarded by the merge process ... MR/2 will
  1271.     create index files when it opens the combined packet.
  1272.  
  1273.     I've tested this procedure with QMail and CamMail doors.  I expect
  1274.     that other doors may created cases that call for a little adjusting.
  1275.     Keep me posted.  ALSO, no error checking is performed to assure that
  1276.     all the packets you are merging together are of the same BBS.  THIS
  1277.     IS IMPORTANT, as merging dissimilar packets WILL NOT WORK CORRECTLY.
  1278.  
  1279.     ALSO NOTE that this takes alot of free disk space.    A set of QWK
  1280.     packets totaling 2MB might require 4-5 MB additional free disk space
  1281.     to function.
  1282.  
  1283. o    INTERNAL: Messages.dat is now opened in READ-ONLY mode.  This allows
  1284.     the file to be accessed in a background task for archiving.
  1285.  
  1286. o    INTERNAL: Modifications to zDList, zDLSelect and zDirSelect (linked
  1287.     list and selection from list(s) routines) to further support "marking"
  1288.     of members and retrieval of "marked" status in various forms.
  1289.  
  1290. o    I received a packet via CIS email from the Channel1 BBS.  This
  1291.     board has been a great logic-breaker for me ... they ought to quit
  1292.     growing! Anyway, their control.dat files finally made it over 64k,
  1293.     which has always been an MR/2 limitation (due to an initial design
  1294.     flaw on my part).  This is now fixed so that there is *no* maximum
  1295.     control.dat file size limitation.  I now handle/parse this file one
  1296.     line at a time w/o loading it all into memory up front.  Channel1
  1297.     packets once again work!
  1298.  
  1299. o    HideConferences can now be specified multiple times within a set
  1300.     of INI files.  The hidden conferences list is now cumulative where
  1301.     before only the last HideConference line was effective.
  1302.  
  1303. o    I expanded the packet selection screen even more and added columns
  1304.     for Per (Personal) and Rep (Replied-to) message counts.  I know that
  1305.     I'm constantly trying to remember which packet had all the personals
  1306.     to me in it, so this helps me out.    The reply count may also help
  1307.     tell you something about a particular packet.
  1308.  
  1309. o    Modified ZTC's library routine system().  Command line was deemed
  1310.     invalid when > 128 characters.    OS/2 allows much more; I changed
  1311.     the max to 256.  This will allow more QWK packets to be merged
  1312.     together (it broke today at 4 fully qualified packet names).
  1313.  
  1314. o    Changes to the way the built-in thesaurus functions.  I've still
  1315.     got some fancy things to do, but it's getting closer.  Invoking
  1316.     the thesaurus for a word that was not a "key" in the word base
  1317.     previously did nothing; it just ignored you.  Now, MR/2 posts a
  1318.     message and jumps into a sequential "match" search.  When you
  1319.     request a further search of the database using ALT-S, a similar
  1320.     message is posted.    Both messages mention that you can now press
  1321.     ESCAPE to hault the search.  Also, when a search completes with
  1322.     out finding any new words, MR/2 keeps the previous word list on
  1323.     the screen.  Before, you would be placed out of the thesaurus.
  1324.  
  1325.  
  1326. KNOWN BUGS AND STUFF
  1327. ====================
  1328.  
  1329. The TEMPORARY directory MUST remain a subdirectory of the MR2 home dir.
  1330.  
  1331. You can't use "\" or "&" as part of any search text (since MR/2 uses them
  1332. as delimiters).
  1333.  
  1334. You can't cancel a search until the first "hit" is displayed.  This is
  1335. particularly irritating when soundex searching, since soundexing is
  1336. noticably slower.
  1337.  
  1338. If you set "SkipReadMessages" to true, you cannot gain access to a
  1339. conferences where all messages have previously been read.
  1340.  
  1341. Other frills that have not yet been addressed:    Bulk marking, twit filter.
  1342. There are probably others. Feel free to bombard me with requests.
  1343.  
  1344.